home *** CD-ROM | disk | FTP | other *** search
- // Copyright 1994 by Jon Dart. All Rights Reserved.
-
- #include "options.h"
- #include <stdlib.h> // for atoi
-
- static const char ini_file[] = "arasan.ini";
-
- static const char *keys[] =
- { "Primary Time Control", "Secondary Time Control" };
-
- static const char *src_names[] =
- { "Ply", "Time", "Game", "Tournament", "None", 0 };
-
- #ifdef WINDOWS
- void Options::get_src_opts( const Control c,
- Search_Type &my_search_type, Search_Limit &my_search_limit)
- {
- char opt_str[80];
- GetPrivateProfileString(keys[c],"Search Type",
- (c == First) ? "Ply" : "None",
- (LPSTR)opt_str,80,ini_file);
- const char **p = src_names;
- int type = 0;
- while (*p)
- {
- if (strcmp(opt_str,*p)==0)
- break;
- ++type; ++p;
- }
- assert(type < 5);
- my_search_type = (Search_Type)type;
- switch (type)
- {
- case 0:
- GetPrivateProfileString(keys[c],"ply","2",
- (LPSTR)opt_str,80,ini_file);
- my_search_limit.max_ply = atoi(opt_str);
- break;
- case 1:
- GetPrivateProfileString(keys[c],"Seconds","60",
- (LPSTR)opt_str,80,ini_file);
- my_search_limit.seconds = atoi(opt_str);
- break;
- case 2:
- GetPrivateProfileString(keys[c],"Minutes","60",
- (LPSTR)opt_str,80,ini_file);
- my_search_limit.limit.minutes = atoi(opt_str);
- break;
- case 3:
- GetPrivateProfileString(keys[c],"Moves","60",
- (LPSTR)opt_str,80,ini_file);
- my_search_limit.limit.moves = atoi(opt_str);
- GetPrivateProfileString(keys[c],"Minutes","60",
- (LPSTR)opt_str,80,ini_file);
- my_search_limit.limit.minutes = atoi(opt_str);
- break;
- default:
- break;
- }
- }
-
- void Options::set_src_opts( const Control c,
- const Search_Type my_search_type,
- const Search_Limit &my_search_limit)
- {
- char msg[40];
- WritePrivateProfileString(keys[c],"Search Type",src_names[my_search_type],
- ini_file);
- switch (my_search_type)
- {
- case Fixed_Ply:
- wsprintf(msg,"%d",my_search_limit.max_ply);
- WritePrivateProfileString(keys[c],"ply",msg,ini_file);
- break;
- case Time_Limit:
- wsprintf(msg,"%ld",my_search_limit.seconds);
- WritePrivateProfileString(keys[c],"Seconds",msg,ini_file);
- break;
- case Game:
- wsprintf(msg,"%d",my_search_limit.limit.minutes);
- WritePrivateProfileString(keys[c],"Minutes",msg,ini_file);
- break;
- case Tournament:
- wsprintf(msg,"%d", my_search_limit.limit.moves);
- WritePrivateProfileString(keys[c],"Moves",msg,ini_file);
- wsprintf(msg,"%d", my_search_limit.limit.minutes);
- WritePrivateProfileString(keys[c],"Minutes",msg,ini_file);
- break;
- case None:
- WritePrivateProfileString(keys[c],"Search Type","None",
- ini_file);
- }
- }
- #endif
-
- Options::Options()
- {
- Search_Limit my_search_limit;
- Search_Type my_search_type;
- #ifdef WINDOWS
- char opt_str[80];
- get_src_opts(First, my_search_type, my_search_limit);
- tc[0] = Time_Control(my_search_type, my_search_limit);
- get_src_opts(Second, my_search_type, my_search_limit );
- tc[1] = Time_Control(my_search_type, my_search_limit);
- GetPrivateProfileString("Preferences","Beep After Move","True",
- (LPSTR)opt_str,80,ini_file);
- prefs.beep_after_move = (strcmp(opt_str,"True")==0) ;
- GetPrivateProfileString("Preferences","Beep On Error","True",
- (LPSTR)opt_str,80,ini_file);
- prefs.beep_on_error = (strcmp(opt_str,"True")==0) ;
- GetPrivateProfileString("Preferences","Can Resign","True",
- (LPSTR)opt_str,80,ini_file);
- prefs.can_resign = (strcmp(opt_str,"True")==0) ;
- GetPrivateProfileString("Preferences","Use Book","True",
- (LPSTR)opt_str,80,ini_file);
- prefs.use_book = (strcmp(opt_str,"True")==0) ;
- GetPrivateProfileString("Preferences","Think When Idle","True",
- (LPSTR)opt_str,80,ini_file);
- prefs.think_when_idle = (strcmp(opt_str,"True")==0) ;
- #else
- // set some default options
- my_search_type = Fixed_Ply;
- my_search_limit.max_ply = 2;
- prefs.beep_after_move = True;
- prefs.beep_on_error = True;
- prefs.can_resign = True;
- prefs.randomize_moves = False;
- prefs.use_book = True;
- prefs.think_when_idle = False;
- tc[0] = Time_Control(Fixed_Ply,my_search_limit);
- tc[1] = Time_Control(None,my_search_limit);
- #endif
- }
-
- Options::~Options()
- {
- save();
- }
-
- void Options::get_preferences( Preferences &p )
- {
- p = prefs;
- }
-
- void Options::update_preferences( const Preferences &p)
- {
- prefs = p;
- }
-
- void Options::save()
- {
- #ifdef WINDOWS
- set_src_opts(First,tc[0].get_search_type(),
- tc[0].get_search_limit());
- set_src_opts(Second,tc[1].get_search_type(),
- tc[1].get_search_limit());
- static char *boolImage[2] = { "False", "True" };
- WritePrivateProfileString("Preferences","Beep After Move",
- boolImage[(int)beep_after_move()],ini_file);
- WritePrivateProfileString("Preferences","Beep On Error",
- boolImage[(int)beep_on_error()],ini_file);
- WritePrivateProfileString("Preferences","Can Resign",
- boolImage[(int)can_resign()],ini_file);
- WritePrivateProfileString("Preferences","Use Book",
- boolImage[(int)use_book()],ini_file);
- WritePrivateProfileString("Preferences","Think When Idle",
- boolImage[(int)think_when_idle()],ini_file);
- #endif
- }
-